extends 数据基类
class_name 动作数据类

const 属性列表:Dictionary={
	id="",
	动作名="",
	需求列表="",
	耗时="",
	动作组标签="",
	状态变化数据="",
	所属卡牌变化数据="",
	生成卡牌数据="",
}

@export var id:String
@export var 动作名:String
@export var 需求列表:Dictionary={}
@export var 耗时:int
@export var 动作组标签:Array=[]
@export var 状态变化数据:Dictionary={}
@export var 所属卡牌变化数据:Dictionary={}
@export var 生成卡牌数据:Dictionary={}

signal 状态变化(变化数据)
signal 所属卡牌变化(变化数据)
signal 生成卡牌(卡牌数据)

func 初始化(数据:Dictionary):
	for 状态 in 属性列表:		
		set(状态,数据[状态])
		
func 可以执行():
	var 全局状态列表=GameCode.世界数据.全局状态列表
	for 状态 in 需求列表:
		if 全局状态列表.keys().has(状态) or 全局状态列表[状态].当前值<需求列表[状态].最小值 and 状态.当前值>需求列表[状态].最大值:
			return false
	return true

func 执行动作(_拖入卡牌=null):
	世界时间.当前时间+=耗时
	所属卡牌变化.emit(所属卡牌变化数据)
	生成卡牌.emit(生成卡牌数据)	
	GameCode.世界数据.执行状态变化(状态变化数据)
